﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Application.Services;
using Volo.Abp.Identity;
using Wuther.Infrastructure.Menus;
using Wuther.Infrastructure.Users;

namespace Wuther.Infrastructure
{
    public interface IUsersAppService: IApplicationService
    {
        /// <summary>
        /// 根据用户ID获取用户信息
        /// </summary>
        /// <param name="Id"></param>
        /// <returns></returns>
        Task<UserInfoDto> GetUserInfoById(Guid Id);
        /// <summary>
        /// 根据用户ids获取用户list
        /// </summary>
        /// <param name="userIds"></param>
        /// <returns></returns>
        Task<List<UserInfoDto>> GetUsersByIdsAsync(List<Guid> userIds);
        /// <summary>
        /// 获取所有用户信息
        /// </summary>
        /// <returns></returns>
        Task<List<UserOptionsDto>> GetAllUsers(GetAllUsersInput input);

        /// <summary>
        /// 获取所有用户详细信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<List<IdentityUserDto>> GetAllUsersInfoAsync(GetAllUsersInput input);

        /// <summary>
        /// 获取当前用户
        /// </summary>
        /// <returns></returns>
        Task<CurrentUserInfo> GetCurrentUserAsync();

        /// <summary>
        /// 获取用户头像
        /// </summary>
        /// <returns></returns>
        Task<string> GetUserAvatarAsync(Guid? id);

        /// <summary>
        /// 设置用户头像
        /// </summary>
        /// <returns></returns>
        Task SetUserAvatarAsync(Guid? id, string url);
        Task<List<MenuDto>> GetUserMenus();
    }
}
